const mockList = require('./mockList'),
    _ = require('lodash'),
    Mock = require('mockjs'),
    config = require('../config')

const ignoreList = config.ignoreList

function mockApi (app) {
    // 模拟数据
    if (Array.isArray(mockList)) {
        mockList.forEach(function (item, index, arr) {
        // config中的ignoreList里的url不处理
            if (_.indexOf(ignoreList, item.url) !== -1) {
                return
            }
            // 格式不正确的 或 设置了ignore的不处理
            if (typeof (item.data) !== 'function' ||
            typeof (item.url) !== 'string' ||
            !!item.ignore) {
                return
            }

            app[typeof (item.type) === 'string' ? item.type : 'get'](item.url, function (req, res) {
                let params = req.params || {},
                    query = req.query || {},
                    body = req.body || {}
                let data = _.assign(params, query, body) // 各种请求参数整合在一个对象里（同名的会覆盖）
                if (item.delay && typeof(item.delay) === 'number') { // 设置延迟时间
                  setTimeout(() => {
                    res.json(item.data(data, req))
                  }, item.delay)
                  return
                }
                res.json(Mock.mock(item.data(data, req)))
            })
        })
    }
}

module.exports = mockApi
